#include <bits/stdc++.h>
using namespace std;

const int N = 110;
int r, c;
int a[N][N];
int f[N][N];
int dx[4] = {0, 0 , 1, -1}, dy[4] = {1, -1, 0, 0};
int dfs(int i, int j)
{
    if(f[i][j]) return f[i][j];
    
    int len = 1;
    for(int k = 0; k < 4; k++)
    {
        int x = dx[k] + i, y = dy[k] + j;
        if(x < 1 || x > r || y < 1 || y > c)
            continue;
        if(a[i][j] <= a[x][y]) continue;

        len = max(dfs(x, y) + 1, len);
    }

    return f[i][j] = len;
}
int main()
{
    cin >> r >> c;
    for(int i = 1; i <= r; i++)
        for(int j = 1; j <= c; j++)
            cin >> a[i][j];
    
    int ret = 0;
    for(int i = 1; i <= r; i++)
        for(int j = 1; j <= c; j++)
            ret = max(ret, dfs(i, j));

    cout << ret << endl;
    return 0;
}
